package com.example.demo.designMode.Proxy;
/**
* @description: TODO 静态代理
* @author 杨镇宇
* @date 2022/3/2 15:52
* @version 1.0
*/

public class ProxyTest {
    public static void main(String[] args) {
        Boss boss = new Boss();
        Hr hr = new Hr(boss);
        hr.applyJob();
    }
}

interface Person{
    //安排工作
    void applyJob();
}

class Boss implements Person{

    @Override
    public void applyJob() {
        System.out.println("部门领导面试通过后帮忙安排工作，推荐给公司大领导");
    }
}

//代理类
class Hr implements Person{
    //组合的方式引用代理对象Boss(遵循组合/聚合复用原则)
    private Boss boss;

    public Hr(Boss boss){
        this.boss = boss;
    }
    @Override
    public void applyJob() {
        //这里写具体的业务逻辑
        System.out.println("hr 检查应聘者是否符合工作要求，推荐给部门领导");
        boss.applyJob();
    }
}

//动态代理类
class HrNew{

}